#include "umlitem.h"
#include "umldiritem.h"

UmlItem::UmlItem(UmlProject *project) : _project(project)
{
    // Datentyp setzten
    this->_itemTypeFlags |= UmlItemType;

    // eindeutige ID erzeugen
    this->_id = QUuid::createUuid().toString();
}

bool UmlItem::isOfType(UmlItem::ItemTypes itemType)
{
    return (this->_itemTypeFlags & itemType) > 0;
}

void UmlItem::appendItemType(UmlItem::ItemTypes itemType)
{
    this->_itemTypeFlags |= itemType;
}

void UmlItem::removeItemType(UmlItem::ItemTypes itemType)
{
    this->_itemTypeFlags = this->_itemTypeFlags | ~itemType;
}

QFlags<UmlItem::ItemType> UmlItem::type()
{
    return this->_itemTypeFlags;
}

QString UmlItem::id()
{
    return this->_id;
}

void UmlItem::setId(QString id)
{
    this->_id = id;
}

QString UmlItem::name()
{
    return this->_name;
}

void UmlItem::setText(QString name)
{
   this->_name = name;
   this->_umlTextRect = this->_boldFontMetrics->boundingRect(this->name());

   this->updateUmlText();
}

QString UmlItem::umlText()
{
    return this->_umlText;
}

UmlProject* UmlItem::project()
{
    return this->_project;
}

void UmlItem::setProject(UmlProject *project)
{
    this->_project = project;
}

void UmlItem::updateUmlText()
{
    this->_umlTextRect = this->boldTextRect(this->umlText());
}
